package com.bxait.toymail.cart.service;

import com.bxait.toymail.cart.vo.Cart;
import com.bxait.toymail.cart.vo.CartItem;

import java.util.List;
import java.util.concurrent.ExecutionException;

/*
@description:
@ClassName CartService
@author Chen
@create 2023-04-29 21:51
@Version 1.0
*/
public interface CartService {
    /*
     * @param
     * @==============History===============<br/>
     * @Description //   获取购物车信息
     * @Date 2023/4/30 2023/4/30
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return com.bxait.toymail.cart.vo.Cart
     */
    Cart getCart() throws ExecutionException, InterruptedException;;

    /*
     * @param cartKey   需要清除的购物项数据
     * @==============History===============<br/>
     * @Description //   清空购物项数据
     * @Date 2023/4/29 2023/4/29
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return void
     */
    void clearCart(String cartKey);

    /*
     * @param skuId     需要添加的商品
     * @==============History===============<br/>
     * @param num       需要添加的数量
     * @Description //   添加商品到购物项中
     * @Date 2023/4/29 2023/4/29
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return com.bxait.toymail.cart.vo.CartItem
     */
    CartItem addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    
    /*
     * @param skuId
     * @==============History===============<br/>
     * @Description //   需要查询的购物项的商品id
     * @Date 2023/4/30 2023/4/30 
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return com.bxait.toymail.cart.vo.CartItem
     */
    CartItem getCartItem(Long skuId);

    /*
     * @param skuId
     * @param check
     * @==============History===============<br/>
     * @Description //   修改当前商品的选中状态
     * @Date 2023/4/30 2023/4/30 
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return void
     */
    void checkItem(Long skuId, Integer check);


    /*
     * @param skuId     需要修改的商品id
     * @param num       需要修改的商品数量
     * @==============History===============<br/>
     * @Description //   修改购物车中的商品数量
     * @Date 2023/4/30 2023/4/30
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return void
     */
    void changeItemCount(Long skuId, Integer num);


    /*
     * @param skuId      需要删除的商品id
     * @==============History===============<br/>
     * @Description //   删除购物项
     * @Date 2023/4/30 2023/4/30
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return void
     */
    void deleteItem(Long skuId);

    /*
     * @param 
     * @==============History===============<br/>
     * @Description //   获取登录用户的需要结算的购物项
     * @Date 2023/4/30 2023/4/30 
     * @Author < a href="2277411582@qq.com">chen</ a>
     * @return java.util.List<com.bxait.toymail.cart.vo.CartItem>
     */
    List<CartItem> getUserCartItems();
}
